<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #result {
            width: 200px;
            height: 100px;
            border: solid 1px pink;
        }
    </style>
</head>
<body>
    <button>点击发送GET请求</button>
    <button>点击发送POST请求</button>
    <div id="result"></div>

    <script>
        const btnGet = document.getElementsByTagName('button')[0];
        const btnPost = document.getElementsByTagName('button')[1];
        const result = document.getElementById('result');
        
        btnGet.onclick = ()=>{
            // 1.创建对象
            const xhr = new XMLHttpRequest();

            // 2.初始化 设置请求方法和url
            // xhr.open('GET','http://127.0.0.1:8000');
            xhr.open('GET','https://39.98.123.211/api/product/getBaseCategoryList');

            // 3.发送
            xhr.send()

            // 4.事件绑定 处理服务端返回的结果
            // 方法 onreadystatechange 当准备状态改变时
            // readystate 表示状态 0：未初始化   1：open方法调用完毕  2：send方法调用完毕  3：服务器返回部分结果  4：服务器返回了所有结果
            xhr.onreadystatechange = ()=>{  //readystate改一次触发一次，会触发四次
                //判断服务器是否返回所有结果
                if(xhr.readyState === 4){
                    //判断服务器响应的状态码
                    if(xhr.status >= 200 &&xhr.status < 300){
                        //处理结果
                        //响应
                        console.log(xhr.status)//状态码
                        //响应
                        console.log(xhr.statusText)//状态字符串
                        //响应
                        console.log(xhr.getAllResponseHeaders())//所有响应头
                        //响应
                        console.log(xhr.response)//响应体
                        // xhr.response
                        result.innerText = xhr.response
                    }
                }
            }
        }

        btnPost.onclick = ()=>{
            const xhr = new XMLHttpRequest();

            //超时设置2s
            xhr.timeout = 2000;

            //超时回调
            xhr.ontimeout = ()=>{
                alert('网络请求超时')
            }

            //网络异常回调
            xhr.onerror = () => {
                alert('网络出现了问题')
            }

            xhr.open('POST','http://127.0.0.1:8000/delay?t='+Date.now());   //解决IE浏览器缓存问题:加上参数?t'+时间戳
            xhr.send()
            xhr.onreadystatechange = ()=>{
                if(xhr.readyState === 4){
                    if(xhr.status >= 200 &&xhr.status < 300){
                        console.log(xhr.response)
                        result.innerText = JSON.parse(xhr.response).age
                    }
                }
            }
        }
    </script>
</body>
</html>